<template>
<!-- 顶部菜单 -->
  <nav class="app-topnav">
    <div class="container">
      <ul>
        <template v-if="profile.token">
            <li><a href="javascript:;"><i class="iconfont icon-user"></i>周杰伦</a></li>
            <li><a href="javascript:;" @click="quitFn">退出登录</a></li>
        </template>
        <template v-else>
            <li><router-link to="/login">请先登录</router-link></li>
            <li><a href="javascript:;">免费注册</a></li>
        </template>
        <li><a href="javascript:;">我的订单</a></li>
        <li><a href="javascript:;">会员中心</a></li>
        <li><a href="javascript:;">帮助中心</a></li>
        <li><a href="javascript:;">关于我们</a></li>
        <li><a href="javascript:;"><i class="iconfont icon-phone"></i>手机版</a></li>
      </ul>
    </div>
  </nav>
</template>
<script>
import { useStore } from 'vuex'
import { computed } from 'vue'
import { useRouter } from 'vue-router'
export default {
  name: 'AppTopnav',
  setup () {
    // 调用函数得到store对象(等价于this.$store的值)
    const store = useStore()
    const router = useRouter()
    // 需要使用computed包一下, 保证vuex的响应式特性(将来vuex值更新, 当前的变量才会跟着改变)
    const profile = computed(() => {
      return store.state.user.profile
    })
    const quitFn = () => {
      // 退出登录:
      // (1): 清除vuex里值(重复赋予空对象, 本地也会赋予空对象)
      // (2): (可选)清除本地localStorage
      // (3): 跳转到登录页
      store.commit('user/SET_USER', {})
      store.commit('cart/SAT_LIST', []) // 退出登录把本地购物车清空(此需求看要求)
      localStorage.clear()
      router.push('/login')
    }
    return { profile, quitFn }
  }
}
</script>
<style scoped lang="less">
.app-topnav {
  background: #333;
  ul {
    display: flex;
    height: 53px;
    justify-content: flex-end;
    align-items: center;
    li {
      a {
        padding: 0 15px;
        color: #cdcdcd;
        line-height: 1;
        display: inline-block;
        i {
          font-size: 14px;
          margin-right: 2px;
        }
        &:hover {
          color: var(--xtx-color);
        }
      }
      ~ li {
        a {
          border-left: 2px solid #666;
        }
      }
    }
  }
}
</style>
